Typical application servers and deployment environments do not offer good support for modeling and managing dependencies between components of an application. For example, if an administrator of such an environment undeploys application B that is required for the successful function of application A, then the service of application B is interrupted without a dynamic mechanism to continue service of application B. Additionally, a developer typically writes an application that has to run on a particular machine using previously developed software, which creates scalability issues. Further, there are many platforms for building applications, but none of these platforms solve layering problems. Accordingly, interdependencies between applications are not taken into account, and developers and customers of these applications are left on their own to handle these problems. The need has arisen to provide a capability model for deploying componentized applications to address these problems.